JVM evolution